package com.rzcoding.service;

import com.rzcoding.dao.AttributeMapper;
import com.rzcoding.entity.Attribute;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Service
public class AttributeService {

    @Autowired
    private AttributeMapper attributeMapper;

    public List<Attribute> findAttrByIdSel(Integer id, String sel) {
        Attribute attribute = new Attribute();
        attribute.setCatId(id);
        attribute.setAttrSel(sel);

        Example example = createExample(attribute);
        example.setOrderByClause("ID DESC");
        return attributeMapper.selectByExample(example);
    }

    /**
     * Attribute构建查询对象
     * @param attribute
     * @return
     */
    public Example createExample(Attribute attribute){
        Example example=new Example(Attribute.class);
        Example.Criteria criteria = example.createCriteria();
        if(attribute!=null){
            // 主键id
            if(!StringUtils.isEmpty(attribute.getId())){
                    criteria.andEqualTo("id",attribute.getId());
            }
            // 属性名称
            if(!StringUtils.isEmpty(attribute.getAttrName())){
                    criteria.andEqualTo("attrName",attribute.getAttrName());
            }
            // 外键，类型id
            if(!StringUtils.isEmpty(attribute.getCatId())){
                    criteria.andEqualTo("catId",attribute.getCatId());
            }
            // only:输入框(唯一)  many:后台下拉列表/前台单选框
            if(!StringUtils.isEmpty(attribute.getAttrSel())){
                    criteria.andEqualTo("attrSel",attribute.getAttrSel());
            }
            // manual:手工录入  list:从列表选择
            if(!StringUtils.isEmpty(attribute.getAttrWrite())){
                    criteria.andEqualTo("attrWrite",attribute.getAttrWrite());
            }
            // 可选值列表信息,例如颜色：白色,红色,绿色,多个可选值通过逗号分隔
            if(!StringUtils.isEmpty(attribute.getAttrVals())){
                    criteria.andEqualTo("attrVals",attribute.getAttrVals());
            }
        }
        return example;
    }

    /**
     * 删除
     * @param id
     */
    public void delete(Integer id){
        attributeMapper.deleteByPrimaryKey(id);
    }

    /**
     * 修改Attribute
     * @param attribute
     */
    public void update(Attribute attribute){
        attributeMapper.updateByPrimaryKeySelective(attribute);
    }

    /**
     * 增加Attribute
     * @param attribute
     */
    public void add(Attribute attribute){
        attribute.setCatId(null);
        attributeMapper.insertSelective(attribute);
    }

    /**
     * 根据ID查询Attribute
     * @param id
     * @return
     */
    public Attribute findById(Integer id){
        return  attributeMapper.selectByPrimaryKey(id);
    }
}
